博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学用MVC4做网站五:5.3修改文章
阅读量:6477 次
发布时间:2019-06-23

本文共 7847 字,大约阅读时间需要 26 分钟。

修改文章是网站必不可少的内容,在我的文章里,文章列表后面操作栏有【修改】链接,点击调转到[UserEdit]Action,今天来实现这个Action。

还是打开【ArticleController】,添加[UserEdit(int id)]Action这里的id指文章Id。

///         /// 修改文章        ///         /// 文章id        [UserAuthorize]        public ActionResult UserEdit(int id)        {            return View(articleRsy.Find(id));        }
右键添加强类型视图,视图与添加文章类似
@model Ninesky.Models.Article@{    ViewBag.Title = "修改文章";    Layout = "~/Views/Shared/_User.cshtml";}
您现在的位置: 修改文章
@using (Html.BeginForm()) { @Html.ValidationSummary(true)
修改文章
@Html.HiddenFor(model => model.CommonModelId) @Html.HiddenFor(model => model.CommonModel.CommonModelId) @Html.LabelFor(model => model.CommonModel.CategoryId) (必填) @Html.DisplayDescriptionFor(model => model.CommonModel.CategoryId)
@Html.HiddenFor(model => model.CommonModel.CategoryId)
@Html.ValidationMessageFor(model => model.CommonModel.CategoryId)
    @Html.HiddenFor(model => model.ArticleId) @Html.LabelFor(model => model.CommonModel.Title) (必填) @Html.DisplayDescriptionFor(model => model.CommonModel.Title)
    @Html.EditorFor(model => model.CommonModel.Title) @Html.ValidationMessageFor(model => model.CommonModel.Title)
    @Html.LabelFor(model => model.Source)@Html.DisplayDescriptionFor(model => model.Source)
    @Html.EditorFor(model => model.Source) @Html.ValidationMessageFor(model => model.Source)
    @Html.LabelFor(model => model.Intro)@Html.DisplayDescriptionFor(model => model.Intro)
    @Html.TextAreaFor(model => model.Intro, new { @class = "Intro" }) @Html.ValidationMessageFor(model => model.Intro)
    @Html.LabelFor(model => model.CommonModel.PicUrl)@Html.DisplayDescriptionFor(model => model.CommonModel.PicUrl)
    @Html.EditorFor(model => model.CommonModel.PicUrl) @Html.ValidationMessageFor(model => model.CommonModel.PicUrl)
    @Html.LabelFor(model => model.CommonModel.Status)@Html.DisplayDescriptionFor(model => model.CommonModel.Status)
    @Html.DropDownListFor(model => model.CommonModel.Status,Ninesky.Models.CommonModel.ContentStatus) @Html.ValidationMessageFor(model => model.CommonModel.Status)
    @Html.LabelFor(model => model.CommonModel.ReleaseDate) (必填) @Html.DisplayDescriptionFor(model => model.CommonModel.ReleaseDate)
    @Html.TextBoxFor(model => model.CommonModel.ReleaseDate, new { @class = "datepicker", type = "datetime" }) @Html.ValidationMessageFor(model => model.CommonModel.ReleaseDate)
    @Html.LabelFor(model => model.Content) (必填) @Html.DisplayDescriptionFor(model => model.Content)
    @Html.TextAreaFor(model => model.Content, new { @class = "content" }) @Html.ValidationMessageFor(model => model.Content)
    }
    @Html.Partial("PartialUserNavMenus")
    @section Scripts { @Styles.Render("~/ZtreeCss") @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/Ztree") @Scripts.Render("~/bundles/kindeditor")}

    修改文章处理action UserEdit(Article article)

    [HttpPost]        [UserAuthorize]        [ValidateInput(false)]        public ActionResult UserEdit(Article article)        {            //验证栏目            CategoryRepository _categoryRsy = new CategoryRepository();            var _category = _categoryRsy.Find(article.CommonModel.CategoryId);            if (_category == null) ModelState.AddModelError("CommonModel.CategoryId", "栏目不存在");            if (_category.Model != "Article") ModelState.AddModelError("CommonModel.CategoryId", "该栏目不能添加文章!");            article.CommonModel.Inputer = UserController.UserName;            ModelState.Remove("CommonModel.Inputer");            article.CommonModel.Model = "Article";            ModelState.Remove("CommonModel.Model");            if (ModelState.IsValid)            {                var _article = articleRsy.Find(article.ArticleId);                if (_article == null)//文章不存在                {                    Error _e = new Error { Title = "文章不存在", Details = "查询不到ArticleId为【" + article.ArticleId.ToString() + "】的文章", Cause = "文章已被删除或向服务器提交文章时数据丢失", Solution = Server.UrlEncode("
  • 返回我的文章重新操作
  • 返回文章管理首页
  • 联系网站管理员
  • ") }; return RedirectToAction("ManageError", "Prompt", _e); } if (_article.CommonModel.Title != article.CommonModel.Title) _article.CommonModel.Title = article.CommonModel.Title; if (_article.CommonModel.CategoryId != article.CommonModel.CategoryId) _article.CommonModel.CategoryId = article.CommonModel.CategoryId; if (article.CommonModel.ReleaseDate != null) _article.CommonModel.ReleaseDate = article.CommonModel.ReleaseDate; if (article.CommonModel.Status != _article.CommonModel.Status) _article.CommonModel.Status = article.CommonModel.Status; if (article.CommonModel.PicUrl != null) _article.CommonModel.PicUrl = article.CommonModel.PicUrl; if (article.CommonModel.CommentStatus != _article.CommonModel.CommentStatus) _article.CommonModel.CommentStatus = article.CommonModel.CommentStatus; if (article.Source != null) _article.Source = article.Source; if (article.Author != null) _article.Author = article.Author; if (article.Intro != null) _article.Intro = article.Intro; _article.Content = article.Content; if (articleRsy.Update(_article)) { Notice _n = new Notice { Title = "修改文章成功", Details = "您已经成功修改了[" + article.CommonModel.Title + "]文章!", DwellTime = 5, NavigationName = "我的文章", NavigationUrl = Url.Action("UserOwn", "Article") }; return RedirectToAction("UserNotice", "Prompt", _n); } else { Error _e = new Error { Title = "修改文章失败", Details = "在修改文章时,未能保存到数据库", Cause = "系统错误", Solution = Server.UrlEncode("
  • 返回修改文章页面,输入正确的信息后重新操作
  • 返回文章管理首页
  • 联系网站管理员
  • ") }; return RedirectToAction("ManageError", "Prompt", _e); } } return View(article); }

    这个action也是先验证栏目是否存在,且能添加文章。呵呵,跟添加文章的基本类似。

    按F5 浏览器修改篇文章看,能够修改,ok!

    ===========================

    代码见:

    ===========================

    1月26日修改:

    今天仔细看的时候发现一个问题。在“我的文章”修改链接代码为:@Html.ActionLink("修改","UserEdit",new {id = item.CommonModelId}),这里的id是公共模型的id,再看看ActionResult UserEdit(int id)里面的代码,文章是articleRsy.Find(id))查询返回的。转到定义看看一下代码。

    ///         /// 查找文章        ///         /// 文章id        /// 
    public override Article Find(int Id) { return dbContext.Articles.AsNoTracking().Include("CommonModel").SingleOrDefault(a => ); }

    这里的id是文章id。所以是用驴唇对了马嘴哭泣的脸.... ....

    怎么改正呢?既然ActionResult UserEdit(int id)的id指的是公共模型的id,那就写个根据公共模型id查找文章的函数FindByCommonModelId(int commonModelId)就行了。

    在ArticleRepository中添加FindByCommonModelId(int commonModelId)函数。

    ///         /// 根据公共模型id查找文章        ///         /// 公共模型Id        /// 
    文章
    public Article FindByCommonModelId(int commonModelId) { return dbContext.Articles.AsNoTracking().Include("CommonModel").SingleOrDefault(a => a.CommonModelId == commonModelId); }

    将UserEdit(int id)中的return View(articleRsy.Find(id))改为return View(articleRsy.FindByCommonModelId(id))

    ///         /// 修改文章        ///         /// 公共模型id        [UserAuthorize]        public ActionResult UserEdit(int id)        {            return View(articleRsy.FindByCommonModelId(id));        }
    完工!

    转载地址:http://oilko.baihongyu.com/

    你可能感兴趣的文章
    我的友情链接
    查看>>
    【数据结构】复杂链表的复制
    查看>>
    Linux下常用的故障排查命令行
    查看>>
    CentOS 6.4 x86_64 最小化安装---基础优化总结
    查看>>
    SQL truncate 、delete与drop区别
    查看>>
    tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
    查看>>
    【KAFKA】通过docker部署kafka集群
    查看>>
    Maven Plugins 与 PluginManagement的关系
    查看>>
    好程序员web前端分享HTML基本结构和基本语法
    查看>>
    动态规划算法解最长公共子序列问题
    查看>>
    “模态”DIV对话框
    查看>>
    我的友情链接
    查看>>
    C#常见异常类型总结
    查看>>
    永别了,2012
    查看>>
    iOS开发基础——OC之OOP详解
    查看>>
    win10删除桌面右键菜单中的显卡项
    查看>>
    我是新人,就在这里常驻了,欢迎大家来访问我的博客
    查看>>
    其实很多问题都可以归根到底为能力不足——至第一次接手项目的我
    查看>>
    Lua学习之字符串函数及模式匹配
    查看>>
    NO.37敏捷之旅2012年12月1日北京站即将开始!
    查看>>